package com.sgj.observer;

import java.util.LinkedList;

/**
 * 抽象类，所有目标的父类
 * @Author: Guoji Shen
 * @Date: 2022/11/7 13:51
 */
public class Subject {

    // 该数组用于保存当前目标对象的所有观察者对象
    private LinkedList<MyObserver> observers = new LinkedList<MyObserver>();

    // 新增一个观察者对象
    public void attachObserver(MyObserver obs) {
        observers.add(obs);
    }

    // 删除一个观察者对象
    public void detachObserver(MyObserver obs) {
        observers.remove(obs);
    }

    // 通知所有观察者对象
    public void notifyObservers() {
        for (MyObserver obs : observers) {
            obs.update(this);
        }
    }
}